身份安全的核心主軸即認證與授權,
認證 (Authentication) 確認當前是否為合法用戶;
授權 (Authorization) 給予適當的系統存取權限,
而現代化的身份安全系統,如何實施有效的認證與授權控管,
即是設計身份安全系統的第一要務。
身份認證的基礎,即為使用者憑證 (Credentials),
透過憑證的輸入、驗證來確認當前登入系統的為合法用戶。
當系統檢查憑證相符時,再予以後段的授權認證,
整體的身份認證過程,可以分一系列的步驟:
不同的認證系統使用不同的認證機制,常見的類型包括:
其中身份認證最為重要的即是 SSO 的使用與實踐:
SAML/SAML 2.0
安全斷言標記語言(SAML)是歷史最悠久的開放標準協議,
用於在身分提供者 (Idp) 和多個服務提供者 (SP) 之間交換加密的身份驗證和授權資料。
由於 SAML 提供更好的安全控制,也廣泛運用於企業或政府領域實現 SSO。
OpenID 連線 (OIDC)
OICD 是另一種開放標準協議,透過 REST API和 JSON 身份驗證令牌,
使網站或應用程式能夠透過另一個服務提供者對使用者進行身份驗證來授予使用者存取權限。
OICD 位於 OAuth 之上,主要用於實現第三方應用程式,例如社交登入。
作為一種輕量級的實現,OAuth/OIDC 通常與 SAML 結合使用,
用於跨軟體即服務 (SaaS)和雲端應用程式、行動應用程式和物聯網 (IoT)裝置實現 SSO。
完成身份認證之後,緊接而來即為授權階段,
而授權方式與傳統依賴使用者名稱和密碼機制不同之處在於,
OAuth 是一種基於存取權杖 (Token) 的授權協定。
通過存取令牌來確立或允許應用程式存取特定資源的資訊。
而 OAuth 協定即是定義授權請求流程中每個構建如何批准、定義和管理存取權杖。
OAuth 通常使用 JSON Web 令牌 (JWT) 標準溝通,以下為 OAuth 應用流程:
單一登入(SSO) 屬於使用者身份驗證協議而 OAuth 則是授權協議。
SSO 通常係身分識別提供者(IdP)採用 XML 格式的安全斷言標記語言(SAML),
進而採用使用者名稱和密碼,或雙因子/多因子驗證使用者數位身分,
而 OAuth 則不會對使用者進行身份驗證,但會授權他們存取系統資源,
實務上 SSO 有時也會使用 OAuth 為經過驗證的使用者提供對企業資源的存取管控。
因此在日常普遍使用資訊系統的背後,
基本上即是透過這些技術協定來構成現代系統的身份安全基石。